﻿using Sgr.Domain.Entities;

namespace Sgr.BillNumbering.Domain
{
    public class SequenceCounter
    {
        /// <summary>
        /// 单据类型，如 'ORDER'
        /// </summary>
        public string Category { get; set; } = string.Empty;

        /// <summary>
        /// 根据 TimeScope 计算出的实际时间键
        /// </summary>
        public string TimeKey { get; set; } = string.Empty;

        /// <summary>
        /// 自定义前缀（可选，用于租户/组织等）
        /// </summary>
        public string CustomPrefix { get; set; } = string.Empty;

        /// <summary>
        /// 全局最大值（防溢出）
        /// </summary>
        public int MaxValue { get; set; }

        /// <summary>
        ///  当前已分配的最大值（持久化）
        /// </summary>
        public int AllocatedMaxValue { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime UpdatedAt { get; set; }

        /// <summary>
        /// 有效期（UTC），用于后续数据清理
        /// </summary>
        public DateTime? ExpiryTime { get; set; }

        /// <summary>
        /// 行版本
        /// </summary>
        public long RowVersion { get; set; }
    }
}